const path = require('path') // 导入 path 模块，用于处理文件和目录的路径
const webpack = require('webpack') // 导入 webpack 模块
const { merge } = require('webpack-merge') // 从 webpack-merge 模块导入 merge 函数，用于合并 webpack 配置对象
const defaultConfig = require('../template/webpack/webpack.config.default') // 导入默认的 webpack 配置对象

module.exports = () => {
  // 读取用户配置文件
  const userConfig = require(path.join(process.cwd(), 'vue3.config')) || {}

  // 组装 webpack 配置对象（将默认配置和命令相关联配置合并）
  const config = merge(defaultConfig, {
    mode: 'production', // 设置 webpack 的模式为 'production'
    // 从用户配置中获取 devtool 的值，如果用户没有配置，则默认为 'source-map'
    devtool: userConfig.devtool || 'source-map'
  })

  // 创建 webpack 编译器实例
  const compiler = webpack(config)

  // 执行打包
  compiler.run((err, stats) => {
    if (err) {
      // 如果打包过程中出现错误，打印错误信息
      console.log('build error:', err)
    }
    // 销毁编译器实例
    compiler.close((err, result) => {
      if (err) {
        // 如果销毁过程中出现错误，打印错误信息
        console.log('close error:', err)
      }
    })
  })
}